//
//  main.c
//  Scanf的基本使用
//
//  Created by ws on 2017/7/13.
//  Copyright © 2017年 王松. All rights reserved.
//

#include <stdio.h>

/**
 scanf()阻塞函数
 */
void test1(){
    //1.定义变量
    int i;//十六地址的地址 //在内存中开辟一个名字为i的存储空间,这个存储空间在内存中是有地址的(十六进制的标识符,在整个内存中都是唯一的)
    //2.使用scanf接受用户从键盘上输入
    scanf("%d",&i);//把输入的数据存储到i对应的内存空间里面(通过地址)
    printf("%d\n",i);
    
    float f;
    scanf("%f\n",&f);//scanf格式字符串最后不要加\n
    printf("%f",f);
}
/**
 scanf录入数据的时候录入的格式必须与格式化字符串中的格式一致
 */
void test2(){
    int a,b,c,d;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    printf("%d, %d, %d, %d\n",a,b,c,d);
}
/**
 scanf 是从前往后匹配的 如果遇到格式不匹配的字符就结束
 scanf 多个占位符中间的分隔符可以是任意的
 */
void test3(){
    //scanf 是从前往后匹配的 如果遇到格式不匹配的字符就结束
    //scanf 多个占位符中间的分隔符可以是任意的
    int a,b,c,d;
    scanf("%d,%d,%d=%d",&a,&b,&c,&d);//scanf前面是什么格式 录入的格式也必须是什么格式
    printf("%d, %d, %d, %d\n",a,b,c,d);
}
/**
 %与d之间可有数值N,N表示接受的数据的宽度
 */
void test4(){
    int a;
    //%与d之间可有数值N,N表示接受的数据的宽度
    scanf("%2d",&a);
    printf("%d\n",a);
}
/**
 1.当录入单精度浮点数的时候,只需要录入小数,不需要再后面加f
 2.当我们录入字符的时候,只需要录入字符,不要加单引号
 */
void test5(){
    int i;
    float f;
    double d;
    char c;
    //1.当录入单精度浮点数的时候,只需要录入小数,不需要再后面加f
    //2.当我们录入字符的时候,只需要录入字符,不要加单引号
    scanf("%d,%f,%lf,%c",&i,&f,&d,&c);
    printf("%d,%f,%lf,%c\n",i,f,d,c);
}
int main(int argc, const char * argv[]) {
    test5();
    return 0;
}
